/**
 * 
 */
package mm.back.service;

import java.util.List;

import mm.back.entity.Rubro;
import mm.back.filtros.RubrosFiltro;
import mm.exceptions.MMGenericException;

/**
 * @author PUSDERKIS
 *
 */
public interface RubroService {
	
	/**
	 * Crea un rubro
	 * @param descripcion el nombre del rubro
	 * @throws MMGenericException en caso de error.
	 */
	Rubro createRubro(String descripcion) throws MMGenericException;
	
	/**
	 * 
	 * @param filtro el filtro de busqueda.
	 * @return los rubros.
	 * @throws MMGenericException
	 */
	List<Rubro> searchRubros(RubrosFiltro filtro)throws MMGenericException;
	
	/**
	 * Carga un rubro en base al id.
	 * @param id el id del rubro.
	 * @return el rubro.
	 * @throws MMGenericException en caso de error.
	 */
	Rubro getRubro(Long id) throws MMGenericException;
	
	Rubro saveRubro(Rubro rubro) throws MMGenericException;
	
	void filtrarNombre(String nombre) throws MMGenericException;
	void filtrarActivo(Boolean activo) throws MMGenericException;
	void resetearFiltro(String nombre, Boolean activo) throws MMGenericException;
	void deleteRubro(Long id) throws MMGenericException;
	
}
